Точка.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                        ОТДЕЛ Точка;
(*============================================================================*
 * НАЗНАЧЕНИЕ: Точка
 *============================================================================*)
ИСПОЛЬЗУЕТ 
  Надел,
  Поле,
  Цепь  ИЗ "..\Иное\",
  Окно  ИЗ "..\Обмен\",
  Ввод  ИЗ "..\Обмен\";
ВИД
  Доступ-=ДОСТУП К Вид;
  Вид-=НАБОР(Надел.Вид)
    строчек :ЦЕЛ;
    надписи :ДОСТУП К РЯД ИЗ Надел.Надпись;
    буквицы :ДОСТУП К РЯД ИЗ ЦЕЛ;
    указка  :ЦЕЛ; (* строка указки *)
    текущая+:ЦЕЛ; (* строка точки *)
  КОН;
  Посылка-=НАБОР(Ввод.Посылка)
    точка:Доступ
  КОН;

(******************************************************************************)
ЗАДАЧА Отрисовка(точка:Доступ);
ПЕР
  строка:ЦЕЛ;
  надпись:Надел.Надпись;
УКАЗ
  ОТ строка:=0 ДО точка.строчек-1 ВЫП
    надпись:="( )";
    ЕСЛИ строка = точка.текущая ТО
      надпись[1]:=0B7X
    ИНАЧЕ
      надпись[1]:=" "
    КОН;
    Цепь.Добавить(надпись,точка.надписи[строка]);
    Надел.ВыводНадписи(точка,надпись,строка)
  КОН;
  ЕСЛИ точка.состояние = Надел.сВыбран ТО
    Окно.ПереместитьУказку(точка.вс+точка.указка,точка.лк+1);
    Окно.РазмерУказки(15)
  КОН
КОН Отрисовка;

(******************************************************************************)
ЗАДАЧА Работа(точка:Доступ);
ПЕР
  посылка:Посылка;
  поле:Поле.Доступ;
УКАЗ
  Отрисовка(точка);
  (* обратная связь *)
  поле:=точка.поле(Поле.Доступ);
  посылка.точка:=точка;
  поле.Приём(поле,посылка)
КОН Работа;

(******************************************************************************)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка);
ПЕР
  строка:ЦЕЛ;
  точка:Доступ;
УКАЗ
  точка:=надел(Доступ);
  ДЛЯ посылка ВИДА
  | Поле.Отрисовка:
      Отрисовка(точка)
  | Ввод.ОтМышки:
      ЕСЛИ посылка.события = {} ТО
        (* просто нажали мышку *)
        точка.текущая:=посылка.с;
        точка.указка:=посылка.с;
        Работа(точка)
      КОН
  | Ввод.ОтКлавиш:
      ВЫБРАТЬ посылка.код ИЗ      
(* <- ^*) | 25H,26H:
             ЕСЛИ точка.указка > 0 ТО
               УМЕНЬШИТЬ(точка.указка);
               Отрисовка(точка);
               посылка.код:=0
             КОН
(* -> V*) | 27H,28H:
             ЕСЛИ точка.указка < точка.строчек-1 ТО
               УВЕЛИЧИТЬ(точка.указка);
               Отрисовка(точка);
               посылка.код:=0
             КОН
(* " " *) | 20H:
             точка.текущая:=точка.указка;
             Работа(точка);
             посылка.код:=0
      ИНАЧЕ
      КОН
  | Поле.Буквица:
      ОТ строка:=0 ДО точка.строчек-1 ВЫП
        ЕСЛИ посылка.буквица = точка.буквицы[строка] ТО
          посылка.буквица:=0;
          точка.текущая:=строка;
          точка.указка:=строка;
          Работа(точка);
          ВОЗВРАТ
        КОН
      КОН
  ИНАЧЕ
  КОН
КОН Приём;

(******************************************************************************)
ЗАДАЧА Создать-(верх,лево:ЦЕЛ; надписи-:РЯД ИЗ Надел.Надпись):Доступ;
ПЕР
  точка:Доступ;
  строчек,строка:ЦЕЛ;
  длина,колонок:ЦЕЛ;
УКАЗ
  СОЗДАТЬ(точка);
  строчек:=РАЗМЕР(надписи);
  СОЗДАТЬ(точка.надписи,строчек);
  СОЗДАТЬ(точка.буквицы,строчек);
  точка.строчек:=строчек;
  колонок:=0;
  ОТ строка:=0 ДО строчек-1 ВЫП
    Надел.СчитатьНадпись(надписи[строка],точка.надписи[строка],
                                       длина,точка.буквицы[строка]);
    ЕСЛИ длина > колонок ТО
      колонок:=длина
    КОН
  КОН;
  Надел.Подготовить(точка,верх,лево,строчек,колонок+4,{Надел.прВыбираемый},Приём);
  ВОЗВРАТ точка
КОН Создать;

КОН Точка.

 
 


Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com

 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы